#pragma once

#include <QObject>

#include <sshconnection.h>
#include <sshremoteprocess.h>
#include <sftpchannel.h>
#include <QTimer>
#include <QHostAddress>
#include <QThread>

class QSSHConnection : public QObject
{
	Q_OBJECT


private:
	explicit	QSSHConnection(QString ipaddr , int port , QString user, QString pwd , int type = 0); 
	static		QSSHConnection * g_QSsh;
public:
	~QSSHConnection();
	static QSSHConnection * GetInstace(QString ipaddr="", int port=0, QString user="", QString pwd="", int type = 0)
	{ 
		if (g_QSsh == NULL)
			g_QSsh = new QSSHConnection(ipaddr, port, user, pwd,type);
		return g_QSsh;
	}
	
	bool RunCMD(QString strCmd);
public:
	bool connetcion();
	
public slots:
	void slotConnected();
	void slotSshConnectError(QSsh::SshError err);

	void slotShellStart();
	void slotDataReceived();
	void slotShellError();
private:
	QSsh::SshConnection  *					m_pSshSocket;
	QSsh::SshConnectionParameters			m_svrParam;
	QSharedPointer<QSsh::SshRemoteProcess>	m_shell;
	 

};
